package net.siufung.web.aop.annotation;


import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 自动幂等注解 在需要保证 接口幂等性 的Controller的方法上使用此注解
 * @author 陈建峰
 * @date 2022/10/3 11:53 下午
 * @since V1.0.0
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AutoIdempotent {

    /**
     * 幂等KEY
     */
    String key() default "idempotent_key:";

    /**
     * 时间ms限制
     */
    int timeout() default 1;

    /**
     * 提示消息
     */
    String description() default "操作过于频繁！";

    /**
     * 超时时间单位
     * @return TimeUnit
     */
    TimeUnit timeoutUnit() default TimeUnit.SECONDS;
}
